package com.mtjsoft.mvvmtest

import android.animation.Animator
import android.animation.ObjectAnimator
import android.os.Message
import android.text.TextUtils
import android.view.animation.LinearInterpolator
import com.alibaba.android.arouter.launcher.ARouter
import com.mtjsoft.www.kotlinmvputils.base.BaseNotActivity
import com.mtjsoft.www.kotlinmvputils.constants.RouterConstants
import com.tencent.mmkv.MMKV
import kotlinx.android.synthetic.main.activity_start.*
import kotlin.random.Random

/**
 * 主APP启动页
 *
 * @author mtj
 * @data 2020-5-15 12:03:14
 * 盘神附体，永无BUG
 * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
 * │Esc│   │ F1│ F2│ F3│ F4│ │ F5│ F6│ F7│ F8│ │ F9│F10│F11│F12│ │P/S│S L│P/B│  ┌┐    ┌┐    ┌┐
 * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘  └┘    └┘    └┘
 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
 * │~ `│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ BacSp │ │Ins│Hom│PUp│ │N L│ / │ * │ - │
 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
 * │ Tab │ Q │ W │ E │ R │ T │ Y │   │ I │ O │ P │{ [│} ]│ | \ │ │Del│End│PDn│ │ 7 │ 8 │ 9 │   │
 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │
 * │ Caps │ A │ S │ D │ F │   │ H │ J │ K │ L │: ;│" '│ Enter  │               │ 4 │ 5 │ 6 │   │
 * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤     ┌───┐     ├───┼───┼───┼───┤
 * │ Shift  │ Z │ X │ C │ V │   │ N │ M │< ,│> .│? /│  Shift   │     │ ↑ │     │ 1 │ 2 │ 3 │   │
 * ├─────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ E││
 * │ Ctrl│    │Alt │         Space         │ Alt│    │    │Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │←─┘│
 * └─────┴────┴────┴───────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
 */
class SplashActivity : BaseNotActivity() {

    private lateinit var alphaAnim: ObjectAnimator

    override fun layoutResId(): Int {
        return R.layout.activity_start
    }

    override fun initView() {
        // 沉浸式状态栏
        setStatusBarColor(0)
        removeAllBaseTopLayout()
    }

    override fun initData() {
        alphaAnim = ObjectAnimator.ofFloat(rl_layout, "alpha", 0.0f, 0.0f)
        startAnimator()
        // 自己保存唯一ID
        val clientId = MMKV.defaultMMKV().decodeString("ClientId", "")
        if (TextUtils.isEmpty(clientId)) {
            MMKV.defaultMMKV()
                .encode("ClientId", (System.currentTimeMillis() + Random.nextInt(100)).toString())
        }
    }

    /**
     * 渐变动画
     */
    private fun startAnimator() {
        alphaAnim.duration = 3000
        alphaAnim.interpolator = LinearInterpolator()
        alphaAnim.addListener(object : Animator.AnimatorListener {
            override fun onAnimationRepeat(animation: Animator?) {
            }

            override fun onAnimationEnd(animation: Animator?) {
                ARouter.getInstance().build(RouterConstants.LOGIN_ACTIVITY).navigation()
                finish()
            }

            override fun onAnimationCancel(animation: Animator?) {
            }

            override fun onAnimationStart(animation: Animator?) {
            }
        })
        alphaAnim.start()
    }

    override fun processHandlerMsg(msg: Message) {
    }

    override fun onDestroy() {
        if (alphaAnim.isRunning) {
            alphaAnim.cancel()
        }
        super.onDestroy()
    }
}